/*
 * Tactica1LibreIzquierdo.java
 *
 * Created on 30 de abril de 2007, 8:40
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package futbol.tacticas.concursantes2007.tikitaka.tactica;


import futbol.tacticas.*;
import futbol.General;
import java.awt.Point;

/**
 *
 * @author Ismael Mariscal Mena
 */
public class Tactica1LibreIzquierdo extends Estado {
    
    /** Creates a new instance of Tactica1LibreIzquierdo */
    public Tactica1LibreIzquierdo() {
    }
    
    public void Entrar(Object obj)
    {
    }
    
    public void Ejecutar(Object obj)
    {
        Tactica1 tactica = (Tactica1)obj;
        Tactica1.JugadorBase j = tactica.jugador[tactica.LIBRE3];
        if (tactica.jugadorMasCercaBalon != tactica.LIBRE3)
        {
            //Mantener a los jugadores del centro del campo en una posicion relativa al balon
            int desplazamientoX = (int)(tactica.balon.getPosicionActual().getX() / 5);
            int desplazamientoY = 0;
            double distanciaY = tactica.balon.getPosicionActual().getY();
            if (distanciaY > 40.0) 
            {
                desplazamientoY += (int)((distanciaY - 40.0) / 2);
                if (desplazamientoY > 50.0) desplazamientoY = 50;
            }
            if (distanciaY < -40.0)
            {
                desplazamientoY += (int)((distanciaY + 40.0) / 2);
                if (desplazamientoY < -50.0) desplazamientoY = -50;
            }
//            if (tactica.jugadorMasCercaBalon != tactica.DEFENSA_IZQUIERDO)
            tactica.comandos.add(new ComandoIrA(tactica.LIBRE3, -40 + desplazamientoX, -40 + desplazamientoY));
//            else
//                tactica.comandos.add(new ComandoIrA(tactica.LIBRE, 60 + desplazamientoX * 4, -60));
        }
        else
        {
            if (!j.cercaBalon())
            {
                j.irAlBalon();
            }
            else
            {
                if (j.jugadorCerca() == true || j.getPosicion().x > 20)
                {
                    int pasarA = (int)(Math.random() * 2);
                    if (pasarA == 0) j.pasarA(tactica.MEDIO_DERECHO);
                    else if (pasarA == 1) j.pasarA(tactica.MEDIO_CENTRO);
                    else if (pasarA == 2) j.pasarA(tactica.MEDIO_IZQUIERDO);
                }
                else
                    j.llevarBalon(new Point(30, -40));
            }
        }    
    }
    
    public void Salir(Object obj)
    {
    }
    
    public boolean Mensaje(Object obj, Mensaje mensaje)
    {
        return true;
    }
}
